class Solution {
public:
    int getMaxLen(vector<int>& nums) {
        int n=nums.size();
        vector<int> f(n);
        vector<int> g(n);
        if(nums[0]>0)
        {
            f[0]=1;
            g[0]=0;
        }
        else if(nums[0]<0)
        {
            f[0]=0;
            g[0]=1;
        }
        else
        {
            f[0]=0;
            g[0]=0;
        }
        int ret=f[0];
        for(int i=1;i<n;++i)
        {
            if(nums[i]>0)
            {
                f[i]=f[i-1]+1;
                if(g[i-1]>0)
                {
                    g[i]=g[i-1]+1;
                }
                else
                {
                    g[i]=0;
                }
                
            }
            else if(nums[i]<0)
            {
                if(g[i-1]>0)
                {
                    f[i]=g[i-1]+1;
                }
                else
                {
                    f[i]=0;
                }
                
                g[i]=f[i-1]+1;
            }
            else
            {
                f[i]=0;
                g[i]=0;
            }
            ret=max(ret,f[i]);
        }
        return ret;
    }
};
